package co.edu.uniquindio.ondas.negocio;

//import javax.ejb.EJB;
import java.io.Serializable;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

//import co.edu.uniquindio.ondas.daos.PersonaDAOLocal;
import co.edu.uniquindio.ondas.daos.ActividadDAO;
import co.edu.uniquindio.ondas.daos.AdministradorDAO;
import co.edu.uniquindio.ondas.daos.AsesorDAO;
import co.edu.uniquindio.ondas.daos.Bitacora2DAO;
import co.edu.uniquindio.ondas.daos.EncuestaDAO;
import co.edu.uniquindio.ondas.daos.EstudianteDAO;
import co.edu.uniquindio.ondas.daos.EvaluadorDAO;
import co.edu.uniquindio.ondas.daos.GrupoDAO;
import co.edu.uniquindio.ondas.daos.InformeAvanceTecnicoDAO;
import co.edu.uniquindio.ondas.daos.InstitucionDAO;
import co.edu.uniquindio.ondas.daos.MaestroDAO;
import co.edu.uniquindio.ondas.daos.MunicipioDAO;
import co.edu.uniquindio.ondas.daos.PersonaDAO;
//import co.edu.uniquindio.ondas.daos.RespuestaSugerenciaDAO;
import co.edu.uniquindio.ondas.entidades.Actividad;
import co.edu.uniquindio.ondas.entidades.Administrador;
import co.edu.uniquindio.ondas.entidades.Asesor;
import co.edu.uniquindio.ondas.entidades.Bitacora2;
import co.edu.uniquindio.ondas.entidades.Bitacora2Maestro;
import co.edu.uniquindio.ondas.entidades.Bitacora3;
import co.edu.uniquindio.ondas.entidades.Bitacora5;
import co.edu.uniquindio.ondas.entidades.Cronograma;
import co.edu.uniquindio.ondas.entidades.Encuesta;
import co.edu.uniquindio.ondas.entidades.Estudiante;
import co.edu.uniquindio.ondas.entidades.Evaluador;
import co.edu.uniquindio.ondas.entidades.Grupo;
import co.edu.uniquindio.ondas.entidades.InformeAvanceTecnico;
import co.edu.uniquindio.ondas.entidades.Institucion;
import co.edu.uniquindio.ondas.entidades.Maestro;
import co.edu.uniquindio.ondas.entidades.Municipio;
import co.edu.uniquindio.ondas.entidades.Persona;
//import co.edu.uniquindio.ondas.entidades.PreguntaGrupo;
//import co.edu.uniquindio.ondas.entidades.RespuestaSugerencia;
import co.edu.uniquindio.ondas.entidades.Sede;
import co.edu.uniquindio.ondas.entidades.Zona;

/**
 * Session Bean implementation class PruebaEJB
 */
@Stateless
public class PruebaEJB implements PruebaEJBRemote, PruebaEJBLocal {

	@PersistenceContext(unitName = "proyectoEJB")
	protected EntityManager entityManager;

	private PersonaDAO pruebaDAO;
	private AdministradorDAO administradorDAO;
	private AsesorDAO asesorDAO;
	private EstudianteDAO estudianteDAO;
	private EvaluadorDAO evaluadorDAO;
	private MunicipioDAO municipioDAO;
	private ActividadDAO actividadDAO;
//	private RespuestaSugerenciaDAO respuestaSugerenciaDAO;
	private EncuestaDAO encuestaDAO;
	private InformeAvanceTecnicoDAO informeAvanceTecnicoDAO;
	private InstitucionDAO institucionDAO;
	private GrupoDAO grupoDAO;
	private Bitacora2DAO bitacora2DAO;

	public PruebaEJB() {
	}

	public void adicionarPersona(Persona persona) {
		pruebaDAO = new PersonaDAO(entityManager);
		pruebaDAO.insert(persona);
	}

	public Persona findByKey(String llave) {
		pruebaDAO = new PersonaDAO(entityManager);
		return pruebaDAO.findByKey(llave);
	}

	public void update(Persona persona) {
		pruebaDAO = new PersonaDAO(entityManager);
		pruebaDAO.update(persona);

	}

	public void remove(Persona persona) {
		pruebaDAO = new PersonaDAO(entityManager);
		pruebaDAO.remove(persona);

	}

	public void adicionarAdministrador(Administrador administrador) {
		administradorDAO = new AdministradorDAO(entityManager);
		administradorDAO.insert(administrador);

	}

	public Administrador findByKeyAdmin(String llave) {
		administradorDAO = new AdministradorDAO(entityManager);
		return administradorDAO.findByKey(llave);
	}

	public void updateAdmin(Administrador administrador) {
		administradorDAO = new AdministradorDAO(entityManager);
		administradorDAO.update(administrador);

	}

	public void removeAdmin(Administrador administrador) {
		administradorDAO = new AdministradorDAO(entityManager);
		administradorDAO.remove(administrador);

	}

	public void adicionarAsesor(Asesor asesor) {
		asesorDAO = new AsesorDAO(entityManager);
		asesorDAO.insert(asesor);

	}

	public Asesor findByKeyAsesor(String llave) {
		asesorDAO = new AsesorDAO(entityManager);
		return asesorDAO.findByKey(llave);
	}

	public void updateAsesor(Asesor asesor) {
		asesorDAO = new AsesorDAO(entityManager);
		asesorDAO.update(asesor);

	}

	public void removeAsesor(Asesor asesor) {
		asesorDAO = new AsesorDAO(entityManager);
		asesorDAO.remove(asesor);

	}

	public void adicionarEstudiante(Estudiante estudiante) {
		estudianteDAO = new EstudianteDAO(entityManager);
		estudianteDAO.insert(estudiante);
	}

	public Estudiante findByKeyEstudiante(String llave) {
		estudianteDAO = new EstudianteDAO(entityManager);
		return estudianteDAO.findByKey(llave);
	}

	public void updateEstudiante(Estudiante estudiante) {
		estudianteDAO = new EstudianteDAO(entityManager);
		estudianteDAO.update(estudiante);

	}

	public void removeEstudiante(Estudiante estudiante) {
		estudianteDAO = new EstudianteDAO(entityManager);
		estudianteDAO.remove(estudiante);

	}

	public void adicionarEvaluador(Evaluador evaluador) {
		evaluadorDAO = new EvaluadorDAO(entityManager);
		evaluadorDAO.insert(evaluador);

	}

	public Evaluador findByKeyEvaluador(String llave) {
		evaluadorDAO = new EvaluadorDAO(entityManager);
		return evaluadorDAO.findByKey(llave);
	}

	public void updateEvaluador(Evaluador evaluador) {
		evaluadorDAO = new EvaluadorDAO(entityManager);
		evaluadorDAO.update(evaluador);

	}

	public void removeEvaluador(Evaluador evaluador) {
		evaluadorDAO = new EvaluadorDAO(entityManager);
		evaluadorDAO.remove(evaluador);

	}

	public void adicionarMaestro(Maestro maestro) {
		MaestroDAO maestroDAO = new MaestroDAO(entityManager);
		maestroDAO.insert(maestro);

	}

	public Maestro findByKeyMaestro(String llave) {
		MaestroDAO maestroDAO = new MaestroDAO(entityManager);
		return maestroDAO.findByKey(llave);
	}

	public void updateMaestro(Maestro maestro) {
		MaestroDAO maestroDAO = new MaestroDAO(entityManager);
		maestroDAO.update(maestro);

	}

	public void removeMaestro(Maestro maestro) {
		MaestroDAO maestroDAO = new MaestroDAO(entityManager);
		maestroDAO.remove(maestro);

	}

	/** ------------------------------------------------------------- **/
	/** Municipio **/

	public void adicionarMunicipio(Municipio municipio) {

		municipioDAO = new MunicipioDAO(entityManager);
		municipioDAO.insert(municipio);

	}

	public Municipio findByKeyMunicipio(long llave) {
		municipioDAO = new MunicipioDAO(entityManager);
		return municipioDAO.findByKey(llave);
	}

	public void updateMunicipio(Municipio municipio) {
		municipioDAO = new MunicipioDAO(entityManager);
		municipioDAO.update(municipio);

	}

	public void removeMunicipio(Municipio municipio) {
		municipioDAO = new MunicipioDAO(entityManager);
		municipioDAO.remove(municipio);

	}

	public long getId(String nombre) {
		municipioDAO = new MunicipioDAO(entityManager);
		return municipioDAO.getId(nombre);
	}

	/** ---------------------------------------------------- **/
	/** Actividad **/

	public void adicionarActividad(Actividad actividad) {

		actividadDAO = new ActividadDAO(entityManager);
		
		List<Actividad>Actividades=actividadDAO.getAll();
		for (int i = 0; i <Actividades.size(); i++) {
			
			System.out.println("Lista de actividades"+Actividades.get(i));
			
		}
		actividadDAO.insert(actividad);

	}

	public Actividad findByKeyActividad(long llave) {

		actividadDAO = new ActividadDAO(entityManager);
		return actividadDAO.findByKey(llave);
	}

	public void updateActividad(Actividad actividad) {
		actividadDAO = new ActividadDAO(entityManager);
		actividadDAO.update(actividad);

	}

	public void removeActividad(Actividad actividad) {
		actividadDAO = new ActividadDAO(entityManager);
		actividadDAO.remove(actividad);

	}

	public long getActividadId(String nombre) {
		actividadDAO = new ActividadDAO(entityManager);
		return actividadDAO.getActividadId(nombre);
	}
	



	/** ----------------------------------------------- **/
	/** AreaTematica **/


	/** ----------------------------------------------- **/
	/** PreguntaGrupo **/

//	public void adicionarPreguntaGrupo(PreguntaGrupo preguntaGrupo) {
//
//		preguntaGrupoDAO = new PreguntaGrupoDAO(entityManager);
//		preguntaGrupoDAO.insert(preguntaGrupo);
//	}
//
//	public PreguntaGrupo findByKeyPreguntaGrupo(long llave) {
//
//		return preguntaGrupoDAO.findByKey(llave);
//	}
//
//	public void updatePreguntaGrupo(PreguntaGrupo preguntaGrupo) {
//
//		preguntaGrupoDAO = new PreguntaGrupoDAO(entityManager);
//		preguntaGrupoDAO.update(preguntaGrupo);
//
//	}
//
//	public void removePreguntaGrupo(PreguntaGrupo preguntaGrupo) {
//		preguntaGrupoDAO = new PreguntaGrupoDAO(entityManager);
//		preguntaGrupoDAO.remove(preguntaGrupo);
//
//	}


	/** Respuesta Sugerenci **/

//	public void AdcionarRespuestaSugerencia(
//			RespuestaSugerencia respuestSugerencia) {
//
//		respuestaSugerenciaDAO = new RespuestaSugerenciaDAO(entityManager);
//		respuestaSugerenciaDAO.insert(respuestSugerencia);
//
//	}
//
//	public RespuestaSugerencia findByKeyRespuestaSugerencia(long llave) {
//
//		return respuestaSugerenciaDAO.findByKey(llave);
//	}
//
//	public void updateRespuestaSugerencia(
//			RespuestaSugerencia repuestRespuestaSugerencia) {
//		respuestaSugerenciaDAO = new RespuestaSugerenciaDAO(entityManager);
//		respuestaSugerenciaDAO.update(repuestRespuestaSugerencia);
//	}
//
//	public void removeRespuestaSugerencia(
//			RespuestaSugerencia respuestaSugerencia) {
//		respuestaSugerenciaDAO = new RespuestaSugerenciaDAO(entityManager);
//		respuestaSugerenciaDAO.remove(respuestaSugerencia);
//	}
//
//	public long getResupuestaSugerenciaId(String nombre) {
//
//		respuestaSugerenciaDAO = new RespuestaSugerenciaDAO(entityManager);
//		return respuestaSugerenciaDAO.getRespuestaSurenciaId(nombre);
//	}

	/**
	 * Encuesta
	 */

	public void AdicionarEncuesta(Encuesta encuesta) {

		encuestaDAO = new EncuestaDAO(entityManager);
		encuestaDAO.insert(encuesta);

	}

	public Encuesta finByKeyEncuesta(long llave) {

		return encuestaDAO.findByKey(llave);
	}

	public void updateEncuesta(Encuesta encuesta) {
		encuestaDAO = new EncuestaDAO(entityManager);
		encuestaDAO.update(encuesta);
	}

	public void removeEncuesta(Encuesta encuesta) {
		encuestaDAO = new EncuestaDAO(entityManager);
		encuestaDAO.remove(encuesta);

	}

	public long getEncuestaId(String nombre) {

		return encuestaDAO.getEncuestaId(nombre);
	}

	/** Informe Avance Tecnico **/

	public void AdicionarInformeAvanceTecnico(
			InformeAvanceTecnico informeAvanceTecnico) {

		informeAvanceTecnicoDAO = new InformeAvanceTecnicoDAO(entityManager);
		informeAvanceTecnicoDAO.insert(informeAvanceTecnico);

	}

	public InformeAvanceTecnico findByKeyInformeAvanceTecnico(long llave) {

		return informeAvanceTecnicoDAO.findByKey(llave);
	}

	public void UpdateInformerAvanceTecnico(
			InformeAvanceTecnico informeAvanceTecnico) {

		informeAvanceTecnicoDAO = new InformeAvanceTecnicoDAO(entityManager);
		informeAvanceTecnicoDAO.update(informeAvanceTecnico);

	}

	public void removeInformeAvanceTecnico(
			InformeAvanceTecnico informeAvanceTecnico) {
		informeAvanceTecnicoDAO = new InformeAvanceTecnicoDAO(entityManager);
		informeAvanceTecnicoDAO.remove(informeAvanceTecnico);

	}

	public long getInformeAvanceTecnicoId(String nombre) {

		return informeAvanceTecnicoDAO.getInformeAvanceTecnicoId(nombre);
	}

	/**********************************************************************************/

	/** Institucion **/

	public void AdicionarInstitucion(Institucion institucion) {

		institucionDAO = new InstitucionDAO(entityManager);
		institucionDAO.insert(institucion);

	}

	public Institucion findByKeyInstitucion(long llave) {
		
		
		return institucionDAO.findByKey(llave);
	}

	public void updateInstitucion(Institucion institucion) {
	     
		institucionDAO=new InstitucionDAO(entityManager);
		institucionDAO.update(institucion);

	}

	public void removeInstitucion(Institucion institucion) {
		institucionDAO=new InstitucionDAO(entityManager);
		institucionDAO.remove(institucion);

	}

	public long getInstitucion(String nombre) {
		
		return institucionDAO.getInstitucionId(nombre);
	}

	
	/**Cronograma**/
	
	public void AdicionarCronograma(Cronograma cronograma) {
		// TODO Auto-generated method stub
		
	}

	public Cronograma findByKeyCronograma(long llave) {
		// TODO Auto-generated method stub
		return null;
	}

	public void updateCronograma(Cronograma cronograma) {
		// TODO Auto-generated method stub
		
	}

	public void removeCronograma(Cronograma cronograma) {
		// TODO Auto-generated method stub
		
	}

	public long getCronogramaId(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}

	public List<Cronograma> getCronogramaAll() {
		// TODO Auto-generated method stub
		return null;
	}

	public long getInstitucionId(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}

	public void AdicionarGrupo(Grupo grupo) {
		// TODO Auto-generated method stub
		
	}

	public Grupo findByKeyGrupo(long llave) {
		// TODO Auto-generated method stub
		return null;
	}

	public void updateGrupo(Grupo grupo) {
		// TODO Auto-generated method stub
		
	}

	public void removeGrupo(Grupo grupo) {
		// TODO Auto-generated method stub
		
	}

	public long getGrupoId(String grupo) {
		// TODO Auto-generated method stub
		return 0;
	}

	public void AdicionarBitacora2(Bitacora2 bitacora2) {
		// TODO Auto-generated method stub
		
	}

	public Bitacora2 findByKey(long llave) {
		// TODO Auto-generated method stub
		return null;
	}

	public void updateBitacora2(Bitacora2 bitacora2) {
		// TODO Auto-generated method stub
		
	}

	public void removeBitacora2(Bitacora2 bitacora2) {
		// TODO Auto-generated method stub
		
	}

	public long getBitacora2Id(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}

	public Bitacora2 findByKeyBitacora2(long llave) {
		// TODO Auto-generated method stub
		return null;
	}

	public void AdicionarBitacora3(Bitacora3 bitacora3) {
		// TODO Auto-generated method stub
		
	}

	public Bitacora3 findByKeyBitacora3(long llave) {
		// TODO Auto-generated method stub
		return null;
	}

	public void updateBitacora3(Bitacora3 bitacora3) {
		// TODO Auto-generated method stub
		
	}

	public void removeBitacora3(Bitacora3 bitacora3) {
		// TODO Auto-generated method stub
		
	}

	public long getBitacora3Id(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}

	public void AdicionarBitacora5(Bitacora5 bitacora5) {
		// TODO Auto-generated method stub
		
	}

	public void removeBitacora5(Bitacora5 bitacora5) {
		// TODO Auto-generated method stub
		
	}

	public long getBitacora5Id(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}

	public void adicionarBitacoraN2Maestro(Bitacora2Maestro bitacoraN2Maestro) {
		// TODO Auto-generated method stub
		
	}

	public Bitacora2Maestro findByKeyBitacora2Maestro(long llave) {
		// TODO Auto-generated method stub
		return null;
	}

	public void updateBitacora2Maestro(Bitacora2Maestro bitacora2Maestro) {
		// TODO Auto-generated method stub
		
	}

	public void removeBitacora2Maestro(Bitacora2Maestro bitacora2Maestro) {
		// TODO Auto-generated method stub
		
	}

	public long getBitacora2Maestro(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}

	public void adicionarZona(Zona zona) {
		// TODO Auto-generated method stub
		
	}

	public Zona findByKeyZona(long llave) {
		// TODO Auto-generated method stub
		return null;
	}

	public void updateZona(Zona zona) {
		// TODO Auto-generated method stub
		
	}

	public void removeZona(Zona zona) {
		// TODO Auto-generated method stub
		
	}

	public long getZonaId(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}

	public void adicionarSede(Sede sede) {
		// TODO Auto-generated method stub
		
	}

	public Sede findByKeySede(long llave) {
		// TODO Auto-generated method stub
		return null;
	}

	public void updateSede(Sede sede) {
		// TODO Auto-generated method stub
		
	}

	public long getSedeId(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}

	public long getResupuestaSugerenciaId(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}

	public long getPreguntaGrupoId(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}

	public long getAreaTematicaId(String nombre) {
		// TODO Auto-generated method stub
		return 0;
	}
}
